Nmap
又稱為 Network Mapper
,它是一個開源的「網路掃描」和「安全審計」的工具,官方文件可以參考:https://nmap.org/docs.html
端口掃描:
檢測目標主機上開放的 TCP
和 UDP
port 等,幫助識別哪些服務正在運行 (哪些服務可以鎖定呢?)。
服務版本探測:
通過對 open port
的分析,Nmap
可以識別 port
上運行的具體服務和版本(如 HTTP
、SSH
、DNS
等)。
OS 探測:
了解目標主機的類型(如 Linux
、Windows
等)。
掌握網絡拓撲:
繪製整個網絡的拓撲圖,識別網絡中的所有存活主機、router
和 switch
。
防火牆和過濾規則檢測:
檢測哪些 port
被防火牆或其他過濾設備過濾,幫助我們「測試防火牆的配置」。
漏洞掃描:
通過腳本引擎(NSE),可以運行多種腳本來檢測目標主機是否存在已知的漏洞或錯誤配置。
講了這麼多 ><,到這邊只是希望讀者對於 Nmap
的使用有大概的了解~
接著下來,讓我們來開啟鷹眼吧! (顆顆)
在 Linux
中,我們可以開啟終端機並輸入以下的指令,這也是最基礎的 nmap
使用方式~
nmap <target> -p <port-range>
使用以上的 command ,我們可以針對目標(該 ip
和 port
) 帶入預設設置進行 TCP
掃描。
筆者大致介紹一下幾個預設設置~
TCP
端口:預設情況下,Nmap
會掃描最常見的 1000 個 TCP port
,而不是掃描所有 65535 個端口。這是為了節省時間,因為絕大多數服務都運行在這些常見的 port
上。
TCP Connect
掃描:預設使用 -sT
,也就是進行 TCP
掃描。
ARP
或是 ICMP
探測:同一子網:
Nmap
會優先使用 「ARP
探測」。這是因為在本地網絡中,ARP
是最可靠且最快速的探測方法。
不同子網(遠程):
Nmap
預設使用 ICMP Echo
探測。ARP
無法跨越子網,因此 Nmap
會選擇 ICMP
、TCP
或 UDP
探測方法。
筆者 say say 念:
上面有提到
ICMP Echo
,筆者稍微介紹一下!
ICMP
(Internet Control Message Protocol
,網際網路控制消息協定) 是 TCP/IP
協議族中的一種協議,而 ICMP Echo
是 ICMP
消息類型之一,通常用來測試網絡連通性。
使用 ICMP Echo
的目的通常不是傳遞數據,而是報告網絡問題或提供網絡狀態信息,例如「錯誤報告」或「連接測試」。
ICMP Echo
是 ICMP
消息的一種,主要用來測試設備是否在線以及網絡的連通性。
此處說明 ICMP Echo
的過程,以 主機 A ping 主機 B 為例:
ICMP Echo Request:
主機 A 發送給目標主機 B 的一條消息,請求主機 B 回應。
ICMP Echo Reply:
如果主機 B 收到 ICMP Echo Request
,會返回一條 ICMP Echo Reply
消息,表示「主機 B 在線且能夠接收和回應數據包」。
筆者 say say 念:
「
Echo
消息」的過程其實就是我們熟悉的Ping
操作,應該不難理解~
在對 ICMP
有稍微的理解後,我們來看看更多使用 Nmap
魔法的方式吧!
如果讀者想要透過 Nmap
偵測 OS、版本、封包等資訊,可以使用以下指令~
nmap -O <target>
nmap -sV <target>
nmap --packet-trace <target>
nmap --reason <target>
它會詳細列出 Nmap 判定每個端口是開放、關閉或過濾的原因,結果大概會長這樣:
PORT STATE SERVICE REASON
22/tcp open ssh syn-ack
80/tcp closed http rst
443/tcp filtered https no-response
筆者 say say 念:
此處有標示
STATE
,這邊的closed
、filtered
等會在下一篇介紹~
nmap <target> -sn
arp ping
nmap <target> --disable-arp-ping
什麼是 ARP ping
?
在本地網絡中,當你用 Nmap
掃描主機時,Nmap
會自動使用 ARP Ping
(也就是發送 ARP
請求來獲取目標主機的 MAC
地址)來檢查目標主機是否在線。
這是因為在本地網絡中,ARP
是比 ICMP
或其他探測方法更有效且更可靠。
即使防火牆阻擋了 ICMP Echo(Ping)
消息,ARP
請求仍然能夠穿過,因為 ARP
是網絡通信中必要的一部分。
使用情境:
ARP ping 被針對或監控了!想禁用它 ><
想使用其他掃描方法 XD
ICMP Echo request
nmap <ip> -Pn
DNS 解析
nmap <ip> -n
什麼是 DNS
解析?
當 Nmap
執行掃描時,默認情況下,它會嘗試將 IP
地址解析為對應的域名(也就是所謂的 DNS
解析)。
為何要禁用 DNS
解析?
禁用 DNS
解析可以在某些情況下提高掃描的速度和效率。
使用情境說明:
假設你需要掃描大量 IP
但你不需要域名資訊,加上這個參數可以「提升你的掃描速度」。
筆者爆肝宣言:
因為之後的內容會比較多,所以不同的掃描技術會在下次介紹~
今天難得開始認真仔細的研究各種細節 ><
感謝 Hackthebox 感謝 chatgpt! 每天產出文章&玩 lab 真的不容易 QQ
下次筆者會介紹 Nmap 的不同的掃描技術(ACK 掃描/SYN 掃描/UDP 掃描)、防火牆繞過、使用 Nmap 的 performance 議題。
https://academy.hackthebox.com/